package com.zky.group.grouporder.controller;


import com.alipay.api.AlipayApiException;
import com.zky.group.grouporder.entity.PayVo;
import com.zky.group.grouporder.service.OrderService;
import com.zky.group.grouporder.service.PayService;
import com.zky.group.grouporder.util.AlipayTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/alipay")
@CrossOrigin
public class PayController {

    @Autowired
    private AlipayTemplate alipayTemplate;

    @Autowired
    private PayService payService;

    @Autowired
    OrderService orderService;





    @RequestMapping("/pay")
    public String pay(@RequestBody PayVo payVo){
       String pay =  payService.pay(payVo);

       return pay;
    }

    @ResponseBody
    @GetMapping(value = "/payOrder",produces = "text/html")
    public String payOrder(@RequestParam("orderSn") String orderSn) throws AlipayApiException {
//        PayVo payVo = new PayVo();
//        payVo.setBody();//订单备注
//        payVo.setOut_trade_no();//订单号
//        payVo.setSubject();//标题
//        payVo.setTotal_amount();//订单金额
       PayVo payVo =  orderService.getOrderPay(orderSn);
       //返回的是一个页面，将此页面直接交给浏览器就行
        String pay = alipayTemplate.pay(payVo);

        System.out.println(pay);

        return pay;
    }






//    @PostMapping("/notify")
//    @CrossOrigin
//    public String notify(HttpServletRequest request) throws AlipayApiException {
//        Map<String, String> map = RequestToMap(request);
//        System.out.println(map);
//        boolean sinTrue = AlipaySignature.rsaCheckV1(map, alipayTemplate.getAlipay_public_key(), alipayTemplate.getCharset(), alipayTemplate.getSign_type());
//        System.out.println(sinTrue ? "验证成功" : "验证失败");
//        return "success";
//
//    }
//
//    /**n
//     * 将request转换为map
//     */
//    public  Map<String, String> RequestToMap(HttpServletRequest request) {
//        Map<String, String> retMap = new HashMap();
//
//        Set<Map.Entry<String, String[]>> entrySet = request.getParameterMap().entrySet();
//
//        for (Map.Entry<String, String[]> entry : entrySet) {
//            String name = entry.getKey();
//            String[] values = entry.getValue();
//            int valLen = values.length;
//
//            if (valLen == 1) {
//                retMap.put(name, values[0]);
//            } else if (valLen > 1) {
//                StringBuilder sb = new StringBuilder();
//                for (String val : values) {
//                    sb.append(",").append(val);
//                }
//                retMap.put(name, sb.toString().substring(1));
//            } else {
//                retMap.put(name, "");
//            }
//        }
//
//        return retMap;
//    }

}
